Relational database systems (RDBMSs) are important tools for storing and retrieving information. As the size of a database increases, it becomes more difficult to achieve good overall performance for queries and updates to the database. One way to improve overall performance is to achieve good I/O performance. I/O performance may be improved using access methods such as indexes and materialized views.
RDBMSs can include database objects, such as tables, indexes, and materialized views, among others. Queries and updates which are performed on the database may access one or more of these database objects.
More than one storage location may exist for a database. For example, a number of disk drives may be available for storage of the database objects. Each storage location may be described with reference to certain characteristics, including: capacity (e.g. 8 GB), average seek time, average read transfer rate, and average write transfer rate.
Traditionally, RDBMS have relied on solutions that spread out each database object uniformly over all available disk drives. A typical solution is to use one or more disk drives, each of which may itself be an array of disks (e.g., a RAID (Redundant Arrays of Inexpensive Disks) array), and then use full striping, in which each database object is spread across all disk drives. Such a solution has the advantage that it is relatively easy to manage since the database administrator (DBA) does not have to be concerned about which disk drive(s) each object should be placed on.